package org.platon.template;

import ai.platon.pulsar.common.LinkExtractors;
import ai.platon.pulsar.common.urls.Hyperlink;
import ai.platon.pulsar.context.PulsarContext;
import ai.platon.pulsar.context.PulsarContexts;
import ai.platon.pulsar.crawl.common.url.ParsableHyperlink;
import ai.platon.pulsar.dom.FeaturedDocument;
import ai.platon.pulsar.dom.select.QueriesKt;
import ai.platon.pulsar.persist.WebPage;
import org.jsoup.nodes.Document;

import java.util.List;
import java.util.stream.Collectors;

public class ContinuousCrawler {

    private static void onParse(WebPage page, FeaturedDocument document) {
        // 对解析后的文档对象进行操作
        // System.out.println(document.title() + "\t|\t" + document.baseUri());

        // 我们可以提取文档中的链接，然后对它们进行爬取
        List<Hyperlink> urls = document.selectHyperlinks("a[href~=/dp/]");
        PulsarContexts.create().submitAll(urls);
    }

    public static void main(String[] args) {
        // 从资源文件中读取种子URL列表，并将它们转换成可解析的超链接对象
        List<Hyperlink> urls = LinkExtractors.fromResource("seeds10.txt")
                .stream()
                .map(seed -> new ParsableHyperlink(seed, ContinuousCrawler::onParse))
                .collect(Collectors.toList());
        // 创建Pulsar Context对象
        PulsarContext context = PulsarContexts.create();
        // 将所有种子URL提交到爬虫队列中
        context.submitAll(urls);

        // 等待所有任务完成
        context.await();
    }
}
